package server

import (
	"context"
	"gc-rds-ha/cmd/task/service"
	"gc-rds-ha/internal/common"
	"gc-rds-ha/internal/logger"
	"gc-rds-ha/internal/server"
	"gc-rds-ha/internal/service/mysql_sync"

	log "github.com/sirupsen/logrus"
)

var (
	GcRdsHa = "gc-rds-ha"
	svr     = server.NewDispatcherServer()
)

func init() {
	// 描述当前Host上所有实例，初始化InstOpStatusMap
	// 一般来说，已经部署的实例，应该初始化到 OpDone 状态
}

func Run() {
	if err := mysql_sync.CheckAndInstall(context.Background()); err != nil {
		log.Fatalf("mysql_sync.CheckAndInstall error: %s", err)
	}
	// 初始化日志
	go logger.SetupLogger()
	// 初始化项目配置
	go common.RedirectOutput()
	// 定时任务
	if common.AgentConfig.OpenTask {
		go service.TaskRun()
	}
	svr.Start()
}

func Stop() {
	// ticker.Stop()
	// todo: 关闭数据库连接
	//dao.Close()
	svr.Stop(true)
}
